package net.flydy.ywxcx.wxcloudrun.common;

import java.util.ArrayList;
import java.util.List;

/**
 * @author crossoverJie
 */

public enum StatusEnum {

    /** 成功 */
    SUCCESS("0000", "成功"),
    /** 失败 */
    FAIL("1000", "未知失败，请重试"),
    /** 参数校验失败**/
    VALIDATION_FAIL("1001", "参数校验失败"),
    /** 重复登录 */
    REPEAT_LOGIN("1002", "账号重复登录，请退出一个账号！"),
    /** 账号不在线 */
    OFF_LINE("1003", "你选择的账号不在线，请重新选择！"),
    /** 登录信息不匹配 */
    ACCOUNT_NOT_MATCH("1004", "登录信息不匹配！"),
    /** 请求限流 */
    REQUEST_LIMIT("1005", "请求限流"),
    SAME_USER("1006", "用户已经存在"),

    NO_USER("1007", "用户不存在"),

    CHECK_CODE_ERROR("1008", "验证码错误"),

    TOKEN_BAD("1009", "token失效"),

    IM_REGISTER_ERROR("1010", "im服务器注册失败"),

    USER_NO_ACCESS("1011", "无权操作"),

    NO_RESOURCE("1012", "资源不存在"),

    NO_ENOUTH_GOLD("1013", "金币不足"),

    NO_ENOUTH_RESOURCE("1014", "资源不足"),

    NO_ORDER("1015", "订单不存在"),

    EXCEED_LIMIT("1016", "超出限制"),

    GIFT_CANNOT_SELL("1017", "礼物不可购买"),

    NOT_IN_ROOM("1018", "未加入房间"),

    ROOM_PWD_BAD("1019", "房间密码不对"),

    NO_DATA("1020", "没有资源数据"),

    HAS_BIND("1021", "已经绑定")

    ,BAD_OPT("1022", "非法操作")
    ,WX_LOGIN_ERROR("1023", "微信登录错误")
    ,BIND_ERROR("1024", "绑定异常")
    ;


    /** 枚举值码 */
    private final String code;

    /** 枚举描述 */
    private final String message;

    /**
     * 构建一个 StatusEnum 。
     * @param code 枚举值码。
     * @param message 枚举描述。
     */
    private StatusEnum(String code, String message) {
        this.code = code;
        this.message = message;
    }

    /**
     * 得到枚举值码。
     * @return 枚举值码。
     */
    public String getCode() {
        return code;
    }

    /**
     * 得到枚举描述。
     * @return 枚举描述。
     */
    public String getMessage() {
        return message;
    }

    /**
     * 得到枚举值码。
     * @return 枚举值码。
     */
    public String code() {
        return code;
    }

    /**
     * 得到枚举描述。
     * @return 枚举描述。
     */
    public String message() {
        return message;
    }

    /**
     * 通过枚举值码查找枚举值。
     * @param code 查找枚举值的枚举值码。
     * @return 枚举值码对应的枚举值。
     * @throws IllegalArgumentException 如果 code 没有对应的 StatusEnum 。
     */
    public static StatusEnum findStatus(String code) {
        for (StatusEnum status : values()) {
            if (status.getCode().equals(code)) {
                return status;
            }
        }
        throw new IllegalArgumentException("ResultInfo StatusEnum not legal:" + code);
    }

    /**
     * 获取全部枚举值。
     *
     * @return 全部枚举值。
     */
    public static List<StatusEnum> getAllStatus() {
        List<StatusEnum> list = new ArrayList<StatusEnum>();
        for (StatusEnum status : values()) {
            list.add(status);
        }
        return list;
    }

    /**
     * 获取全部枚举值码。
     *
     * @return 全部枚举值码。
     */
    public static List<String> getAllStatusCode() {
        List<String> list = new ArrayList<String>();
        for (StatusEnum status : values()) {
            list.add(status.code());
        }
        return list;
    }
}
